package br.uff.es2.xadrez.core;

public abstract class Piece {
	
	protected static Board board = new Board();
	
	/**
	 * Posi��o. Exemplo:  E4
	 */
	//protected String position;

        protected Color color;

        protected boolean moved;

        protected String imageFilePath;

        protected int value;

	/**
	 * @return uma matriz de inteiros onde 0 � uma casa para onde
	 * o movimento � invalido e 1 uma casa para onde o movimento � v�lido.
	 */
	public abstract int[][] getAvaiableMoves(int[] posicao, Piece[][] board);

	public static Board getBoard() {
		return board;
	}

//	public String getPosition() {
//		return position;
//	}
//
//	public void setPosition(String position) {
//		this.position = position;
//	}

    /**
     * @return the imageFilePath
     */
    public String getImageFilePath() {
        return imageFilePath;
    }

    /**
     * @param imageFilePath the imageFilePath to set
     */
    public void setImageFilePath(String imageFilePath) {
        this.imageFilePath = imageFilePath;
    }

    /**
     * @return the value
     */
    public int getValue() {
        return value;
    }

    /**
     * @param value the value to set
     */
    public void setValue(int value) {
        this.value = value;
    }

    public enum Color {
        WHITE, BLACK;
    }

    /**
     * @return the color
     */
    public Color getColor() {
        return color;
    }

    /**
     * @param color the color to set
     */
    public void setColor(Color color) {
        this.color = color;
    }

    /**
     * @return the moved
     */
    public boolean isMoved() {
        return moved;
    }

    /**
     * @param moved the moved to set
     */
    public void setMoved(boolean moved) {
        this.moved = moved;
    }

}